/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dpy.appmvdpy.Models.Validators;

import com.dpy.appmvdpy.Facades.ClientesFacade;
import com.dpy.appmvdpy.Helpers.StaticSources;
import com.dpy.appmvdpy.Models.Clientes;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;

/**
 *
 * @author ac_psoares
 */
@Component
@Scope(value="request")
public class ClientesValidator extends DefaultValidator<Clientes> {

    @Autowired
    public ClientesFacade facade;
    @Override
    public boolean supports(Class<?> type) {
        return Clientes.class.isAssignableFrom(type);
    }

    @Override
    public void validate(Object o, Errors errors) {
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "nome","required.nome", "Nome não informado!");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "codigo","required.codigo", "Código DPY não informado!");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "dataCadastro","required.dataCadastro", "Data de cadastro não informada!");
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, "vendedor","required.vendedor", "Vendedor não informado!");
    
        Clientes c = (Clientes)o;
        if(facade.getClienteByCnpj(c.getCnpj()) != null && c.getId() == null)
            errors.rejectValue("cnpj","unique.cnpj", "CNPJ já cadastrado no banco de dados!");
        
        if(Integer.valueOf(c.getCodigo()) < c.getVendedor().getInicioFaixaCadastro() || Integer.valueOf(c.getCodigo()) > c.getVendedor().getFimFaixaCadastro())
            errors.rejectValue("codigo","unique.cnpj", "Código fora da faixa de cadastro do vendedor!");
    
         if(!StaticSources.validaCNPJ(StringUtils.remove(StringUtils.remove(StringUtils.remove(c.getCnpj(), "."),"/"),"-")))
         {
             errors.rejectValue("cnpj","valid.cnpj", "CNPJ inválido!");
         }
             
    }
    
}
